home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / internet / irc_i_dodatki / kuang / kuangeleven28.lha / Rexx / CTCP / fdcc.amirx < prev    next >
Text File  |  1997-01-21  |  5KB  |  150 lines

  1. /*) CTCP FDCC v1.1 by Josef Faulkner (panther@gate.net) IRC: Josef
  2. \\\
  3. /\/ Written for Grapevine 1.436 and newer. (CTCP trapping)
  4. \\\
  5.  CONVERTED TO AMIRC by Ariel Magnum for Kuang Eleven 2.5
  6.  -Arexx commands and parsing converted to AmIRC
  7.  -HELP string fixed
  8. /\/ This program is unlike XDCC in that it will allow a user to access
  9. \\\ a directory, and all of its subdirectories recursively to autoget
  10. /\/ by DCC files from you.
  11. \\\
  12. /\/ I have tried to make the system as secure as possible, so that nobody
  13. \\\ can go above the assigned area on your drive.  If you see any holes in
  14. /\/ this, please inform me asap.
  15. \\\
  16. /\/ Insallation:
  17. \\\ 1) install in your amirc rexx drawer
  18. /\/ 2) assign FDCC: wherever your files are
  19. \\\
  20. /\/ Usage:
  21. \\\ /ctcp <nick> LIST          lists files in format <name> <size> <filenote>
  22. /\/ /ctcp <nick> SEND <file>   sends <file> in current dir
  23. \\\ /ctcp <nick> MOVE <file>   sends <file> in current dir by DCC MOVE
  24. /\/ /ctcp <nick> CD <dir>      changes directory to <dir> for that user
  25. \\\
  26. /\/ Notes:
  27. \\\ o Up to 40-character descriptions can be added by simply making a filenote
  28. /\/ o No recursion limits
  29. \\\ o Separate current directories kept in arexx clipboards for each nick
  30. /\/ o DO NOT USE ANY UNIX-DIRS TYPE PROGRAMS WITH THIS, as this does not
  31. \\\   check for .. in the path.  Pester me and ill implement this for
  32. /\/   the next version.
  33. \\\ o Be sure to set your nick below
  34. (*/
  35. options results
  36.  
  37. "GETMYNICK"
  38. mynick=result
  39. if ~show('L','rexxsupport.library') then if ~addlib('rexxsupport.library',0,-30,0) then do
  40.    'echo You need rexxsupport.library version 30 or greater in libs:'
  41.    exit 10 
  42. end
  43.    parse arg ':'prefix' 'type' 'channel' :'text
  44.    parse var prefix nick'!'useraddr
  45.    div='01'x
  46.    parse upper var text (div) pref cmd args (div)
  47.    args=strip(args)
  48.    if pref~='FDCC' then exit
  49.  
  50.    text=getclip('gv.fdcc')
  51.    if text~='' then do
  52.       if (word(text,1)=nick)&(((time(S))-word(text,2))<=5) then do
  53.          call setclip('gv.fdcc',nick' 'time(S))
  54.          exit
  55.       end
  56.    end
  57.    call setclip('gv.fdcc',nick' 'time(S))
  58.    curdir=getclip('fdcc.'nick)
  59.    if (strip(curdir)='')|(index(curdir,'//')>0)|(left(curdir,5)~='FDCC:') then curdir='FDCC:'
  60.    select
  61.       when cmd='LIST' then do
  62.          if showlist('A','FDCC') then do
  63.             files=showdir(curdir)
  64.             c=0
  65.             'RAW NOTICE' nick ':Files in 'curdir
  66.             do until files=""
  67.                c=c+1
  68.                parse var files file' 'files
  69.                info=statef(curdir||file)
  70.                parse var info type' 'length' 'blocks' 'protection' 'days' 'minutes' 'ticks' 'comment
  71.                file=left(file,20,' ')
  72.                length=left(length,7,' ')
  73.                comment=left(comment,40,' ')
  74.                if type='FILE' then 'RAW NOTICE' nick ':' file length comment
  75.                else 'RAW NOTICE' nick ':' file 'DIR'
  76.                if c//5=0 then call delay(400)
  77.             end
  78.             'RAW NOTICE' nick ':End of list.'
  79.          end
  80.          else 'RAW NOTICE' nick ':Sorry, no FDCC directory was found on this client.'
  81.       end
  82.       when (cmd='SEND')|(cmd='MOVE') then do
  83.          if showlist('A','FDCC') then do
  84.             if (index(args,':')=0)&(index(args,'/')=0) then do
  85.                if exists(curdir||args) then do
  86.                   'SAY /dcc' cmd nick curdir||args
  87.                end
  88.                else 'RAW NOTICE' nick ':' args 'not found.'
  89.             end
  90.             else 'RAW NOTICE' nick ':: and / are not allowable filename characters.'
  91.          end
  92.          else 'RAW NOTICE' nick ':Sorry, no FDCC directory was found on this client.'
  93.       end
  94.       when cmd='CD' then do
  95.          if showlist('A','FDCC') then do
  96.             if strip(args)~='' then do
  97.                if index(args,':')=0 then do
  98.                   if exists(curdir||args) then do
  99.                      if word(statef(curdir||args),1)='DIR' then do
  100.                         select
  101.                            when right(args,1)='/' then do
  102.                               if right(curdir,1)='/' then do
  103.                                  if index(curdir,'/')=length(curdir) then do                             
  104.                                     curdir='FDCC:'
  105.                                  end
  106.                                  else do
  107.                                     curdir=reverse(curdir)
  108.                                     parse var curdir '/'.'/'curdir
  109.                                     curdir=reverse(curdir)||'/'
  110.                                  end
  111.                                  call setclip('fdcc.'nick,curdir)
  112.                                  'RAW NOTICE' nick ':Directory changed to 'curdir
  113.                               end
  114.                               else 'RAW NOTICE' nick ':You are in the root dir.'
  115.                            end
  116.                            when index(args,':')>0 then do
  117.                               call setclip('fdcc.'nick,'FDCC:')
  118.                               'RAW NOTICE' nick ':Directory changed to FDCC:'
  119.                            end                     
  120.                            otherwise do
  121.                               cddir=curdir||args'/'
  122.                               call setclip('fdcc.'nick,cddir)
  123.                               'RAW NOTICE' nick ':Directory changed to 'curdir||args'/'
  124.                            end
  125.                         end
  126.                      end
  127.                      else 'RAW NOTICE' nick ':You cant CD to a file.'
  128.                   end
  129.                   else 'RAW NOTICE' nick ':' args 'does not exist.'
  130.                end
  131.                else 'RAW NOTICE' nick ':Cannot change to another drive ('args').'
  132.             end
  133.             else 'RAW NOTICE' nick ':Current directory is' curdir
  134.          end
  135.          else 'RAW NOTICE' nick ':Sorry, no FDCC directory was found on this client.'
  136.       end
  137.       when cmd='HELP' then do
  138.          'RAW NOTICE' nick ':Kuang Eleven FDCC'
  139.          'RAW NOTICE' nick ':/ctcp' mynick 'FDCC LIST        lists files in format <name> <size> <filenote>'
  140.          'RAW NOTICE' nick ':/ctcp' mynick 'FDCC SEND <file> sends <file> in current dir'
  141.          'RAW NOTICE' nick ':/ctcp' mynick 'FDCC MOVE <file> sends <file> in current dir by DCC MOVE'
  142.          'RAW NOTICE' nick ':/ctcp' mynick 'FDCC CD <dir>    changes directory to <dir> for that user'
  143.       end
  144.       otherwise 'RAW NOTICE' nick ':Unknown command:' cmd
  145. end
  146. exit
  147. syntax:
  148. "ECHO" "P=K11XDCC" "Command on line" SIGL "returned" RC ":" errortext(rc) sourceline(SIGL)
  149. exit
  150.